<?php


namespace api\web\controller;


use cmf\controller\RestBaseController;
use think\facade\Db;
use think\facade\Filesystem;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

class UploadController extends RestBaseController
{
    //上传文件至本地服务器
//'url' => request()->domain().DIRECTORY_SEPARATOR.'storage'.DIRECTORY_SEPARATOR. $result
    public function uploadLocal()
    {
        //接收文件
        $image = request()->file('image');
        $result = Filesystem::disk('public')->putFile('image',$image);
        if ($result){
            return success('上传成功',[
                'url' => $result
            ]);
        }else{
            return error('上传失败');
        }
    }

    // 文件上传至七牛云对象存储示例
    // 文档地址：https://developer.qiniu.com/kodo/1241/php#1
    // composer 命令：composer require qiniu/php-sdk
    public function uploadToQiniu()
    {
        $file = request()->file('image');
        //重命名

//        $newName = time().mt_rand(111,999).$ext;
        // 构建鉴权对象
        // 读取对象存储配置
        $accessKey = config('app.qiniuOss.accessKey');
        $secretKey = config('app.qiniuOss.secretKey');
        $bucket = config('app.qiniuOss.bucket');
        // 鉴权
        $auth = new Auth($accessKey, $secretKey);
        // 生成上传 Token
        $token = $auth->uploadToken($bucket);
        // 初始化 UploadManager 对象并进行文件的上传。
        $uploadMgr = new UploadManager();
        // 要上传文件的本地路径
        $filePath = $file->getPathname();
        // 上传到存储后保存的文件名（这里使用时间戳作为文件名，严格来说这并不能保证文件名唯一，仅作为示例。）
        $saveName = time(). '.' . $file->getOriginalExtension();
        list($ret, $err) = $uploadMgr->putFile($token, $saveName,$filePath);
        if ($err !== null) {
            return error('上传失败');
        } else {
            return json(['code' => 1,'msg' => '上传成功','data' => [
                'url' => 'http://sel4by6d6.hb-bkt.clouddn.com'.$ret['key']
            ]]);
        }
    }
}